参考: Vimrc 配置指南 - 如何使用映射、Vimscript、状态行等自定义您的 Vim 代码编辑器
[root@www ~]# vi /etc/profile # 在行末添加如下 alias vi='vim' [root@www ~]# source /etc/profile
[root@www ~]# vi ~/.vimrc
"不与 Vi 兼容(采用 Vim 自己的操作命令) set nocompatible "指定编码 set encoding=utf-8 "指定文件编码设置 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 "指定文件格式 set fileformats=unix,dos "设置备份 set backup "设置备份目录 set backupdir=~/backup "记录历史的行数 set history=100 "启用搜索突出显示 set hlsearch "搜索忽略大小写 set ignorecase "显示部分匹配的增量搜索 set incsearch "当搜索查询包含大写字母时,自动将搜索切换为区分大小写 set smartcase "新行继承前一行的缩进(自动缩进) set autoindent "将制表符转换为空格 set expandtab "启用特定于文件类型的缩进规则 filetype indent on "智能对齐方式 set smartindent "当移动线条时,将压痕四舍五入到“shiftwidth”的最接近的倍数 set shiftround "移位时,使用四个空格缩进 set shiftwidth=4 "按下“tab”键时插入“tabstop”空格数 set smarttab "使用四个空格缩进 set tabstop=4 "在输入括号时光标会短暂地跳到与之相匹配的括号处,不影响输入 set showmatch "打开语法高亮。自动识别代码,使用多种颜色显示 syntax on "语法启用,启用语法突出显示 syntax enable "启用换行 set wrap "始终显示状态栏 set laststatus=2 "设置标尺,始终显示光标位置 set ruler "将命令行的选项卡完成选项显示为菜单 set wildmenu "限制搜索自动完成的文件 set complete-=i "在宏和脚本执行期间不要更新屏幕 set lazyredraw "启用256色 set t_Co=256 "突出显示当前光标下的行 set cursorline "设置编号,在侧栏上显示行号 set number "设置窗口的标题,反映当前正在编辑的文件 set title "突出匹配[{()}] set showmatch "避免在单词中间换行。 set linebreak "使用适合深色背景的颜色。 set background=dark "在缩进、换行和插入开始时使用退格。 set backspace=indent,eol,start "启用文件类型检测。Vim 将能够尝试检测正在使用的文件类型。 filetype on "为检测到的文件类型启用插件并加载插件。 filetype plugin on "为检测到的文件类型加载缩进文件。 filetype indent on "有些文件我们永远不想用 Vim 编辑。Wildmenu 将忽略具有这些扩展名的文件。 set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx "如果当前文件类型是 HTML,则将缩进设置为 2 个空格。 autocmd Filetype html setlocal tabstop=2 shiftwidth=2 expandtab "如果 Vim 版本等于或大于 7.3 启用撤消文件。这使您即使在保存文件后也可以撤消对文件的更改。 if version >= 703 set undodir=~/.vim/backup set undofile set undoreload=10000 endif "设置 vimrc 主题色。 darkblue 为黑色。Linux 系统下可省略此项设置 colorscheme pablo " 注释字体颜色,当前设置字体颜色为白色; 当设置 colorscheme 主题时,此项可忽略设置 "hi comment ctermfg=7
vi ~/.vimrc
set nocompatible " 不与 Vi 兼容(采用 Vim 自己的操作命令) set encoding=utf-8 " 指定编码 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 " 指定文件编码设置 set fileformats=unix,dos " 指定文件格式 set backup " 设置备份 set backupdir=~/backup " 设置备份目录 set history=100 " 记录历史的行数 set hlsearch " 启用搜索突出显示 set ignorecase " 搜索忽略大小写 set incsearch " 显示部分匹配的增量搜索 set smartcase " 当搜索查询包含大写字母时,自动将搜索切换为区分大小写 set autoindent " 新行继承前一行的缩进(自动缩进) set expandtab " 将制表符转换为空格 filetype indent on " 启用特定于文件类型的缩进规则 set smartindent " 智能对齐方式 set shiftround " 当移动线条时,将压痕四舍五入到“shiftwidth”的最接近的倍数 set shiftwidth=4 " 移位时,使用四个空格缩进 set smarttab " 按下“tab”键时插入“tabstop”空格数 set tabstop=4 " 使用四个空格缩进 set showmatch " 在输入括号时光标会短暂地跳到与之相匹配的括号处,不影响输入 syntax on " 打开语法高亮。自动识别代码,使用多种颜色显示 syntax enable " 语法启用,启用语法突出显示 set wrap " 启用换行 set laststatus=2 " 始终显示状态栏 set ruler " 设置标尺,始终显示光标位置 set wildmenu " 将命令行的选项卡完成选项显示为菜单 set complete-=i " 限制搜索自动完成的文件 set lazyredraw " 在宏和脚本执行期间不要更新屏幕 set t_Co=256 " 启用256色 set cursorline " 突出显示当前光标下的行 set cursorcolumn " 突出光标所在列的光标线。 set number " 设置编号,在侧栏上显示行号 set title " 设置窗口的标题,反映当前正在编辑的文件 set showmatch " 突出匹配[{()}] set linebreak " 避免在单词中间换行。 set background=dark " 使用适合深色背景的颜色。 set backspace=indent,eol,start " 在缩进、换行和插入开始时使用退格。 filetype on " 启用文件类型检测。Vim 将能够尝试检测正在使用的文件类型。 filetype plugin on " 为检测到的文件类型启用插件并加载插件。 filetype indent on " 为检测到的文件类型加载缩进文件。 set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx " 有些文件我们永远不想用 Vim 编辑。Wildmenu 将忽略具有这些扩展名的文件。 autocmd Filetype html setlocal tabstop=2 shiftwidth=2 expandtab " 如果当前文件类型是 HTML,则将缩进设置为 2 个空格。 if version >= 703 " 如果 Vim 版本等于或大于 7.3 启用撤消文件。这使您即使在保存文件后也可以撤消对文件的更改。 set undodir=~/.vim/backup set undofile set undoreload=10000 endif " 如果 Vim 版本等于或大于 7.3 启用撤消文件。这使您即使在保存文件后也可以撤消对文件的更改。 colorscheme pablo " 设置 vimrc 主题色。 darkblue 为黑色。 当 colorscheme 设置为 murphy 时,注释字体颜色为的色;为 pablo 时,注释字体颜色为灰白;为 pablo 时,注释字体颜色为灰白; "hi comment ctermfg=7 " 注释字体颜色,当前设置字体颜色为白色。当设置 colorscheme 主题时,可忽略此项设置。
翻译版
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " ██╗ ██╗██╗███╗ ███╗██████╗ ██████╗ " ██║ ██║██║████╗ ████║██╔══██╗██╔════╝ " ██║ ██║██║██╔████╔██║██████╔╝██║ " ╚██╗ ██╔╝██║██║╚██╔╝██║██╔══██╗██║ " ╚████╔╝ ██║██║ ╚═╝ ██║██║ ██║╚██████╗ " ╚═══╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " 禁用与 vi 的兼容性,这可能会导致意外问题。 set nocompatible " " 启用文件类型检测。Vim 将能够尝试检测正在使用的文件类型。 filetype on " " 为检测到的文件类型启用插件并加载插件。 filetype plugin on " " 为检测到的文件类型加载缩进文件。 filetype indent on " " 打开语法高亮。 syntax on " " 将序号添加到文件中。 set number " " 突出光标所在行的光标线。 set cursorline " " 突出光标所在列的光标线。 set cursorcolumn " " 将移位宽度设置为 4 个空格(将标签宽度设置为 4 列)。 "set shiftwidth=4 " " 将标签宽度设置为 4 列(使用四个空格缩进)。 set tabstop=4 " " 使用空格字符而不是制表符。 set expandtab " " 不要保存备份文件。 set nobackup " " 滚动时不要让光标滚动到 N 行以下或以上。 set scrolloff=10 " " 不要换行。让长线尽可能地延伸。 set nowrap " " 在搜索文件时,您键入时会逐渐突出显示匹配的字符。 set incsearch " " 搜索时忽略大写字母。 set ignorecase " " 如果搜索大写字母,则覆盖忽略大小写选项。 " 这将允许您专门搜索大写字母。 set smartcase " " 显示您在屏幕最后一行键入的部分命令。 set showcmd " " 在最后一行显示你的模式。 set showmode " " 在搜索过程中显示匹配的词。 set showmatch " " 进行搜索时使用突出显示。 set hlsearch " " 设置要保存在历史记录中的命令默认数量为 20。 set history=1000 " " 按 TAB 后启用自动完成菜单。 set wildmenu " " 使 wildmenu 的行为类似于 Bash 补全。 set wildmode=list:longest " " 有些文件我们永远不想用 Vim 编辑。 " Wildmenu 将忽略具有这些扩展名的文件。 set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx " " 插件 ---------------------------------------------------------------- {{{ " call plug#begin('~/.vim/plugged') Plug 'dense-analysis/ale' Plug 'preservim/nerdtree' call plug#end() " " }}} " " 映射 --------------------------------------------------------------- {{{ " " 将反斜杠设置为前导键。 let mapleader = "\" " " 按 \\ 跳回到上一个光标位置。 nnoremap\ `` " " 按 \p 将当前文件从 Linux 操作系统打印到默认打印机。 " 查看可用的打印机:lpstat -v " 设置默认打印机:lpoptions -d " 表示不显示输出。 nnoremap p :%w !lp " " 输入 jj 快速退出插入模式。 inoremap jj " " 按空格键在命令模式下键入 : 字符。 nnoremap : " " 按字母 o 将在当前行下方打开一个新行。 " 在当前行上方或下方创建新行后退出插入模式。 nnoremap o o nnoremap O O " " 在搜索过程中移动到下一个单词时,光标垂直居中。 nnoremap n nzz nnoremap N Nzz " " 从光标拉到行尾。 nnoremap Y y$ " " 映射 F5 键以在 Vim 中运行 Python 脚本。 " 我们将 F5 映射到此处的命令链。 " :w 保存文件。 " (回车)就像按回车键。 " !clear 运行外部清除屏幕命令。 " !python3 % 使用 Python 执行当前文件。 nnoremap :w :!clear :!python3 % " " 你可以在 Vim 中通过输入 :split 或 :vsplit 来分割窗口。 " 按 CTRL+j、CTRL+k、CTRL+h 或 CTRL+l 可以更轻松地导航拆分视图。 nnoremap j nnoremap k nnoremap h nnoremap l " " 使用箭头键调整拆分窗口的大小,方法是按: " CTRL+UP, CTRL+DOWN, CTRL+LEFT, or CTRL+RIGHT. noremap + noremap - noremap > noremap < " " NERDTree 特定的映射。 " 映射 F3 键以切换 NERDTree 打开和关闭。 nnoremap :NERDTreeToggle " " 让 nerdtree 忽略某些文件和目录。 let NERDTreeIgnore=['\.git$', '\.jpg$', '\.mp4$', '\.ogg$', '\.iso$', '\.pdf$', '\.pyc$', '\.odt$', '\.png$', '\.gif$', '\.db$'] " " }}} " " VIMSCRIPT -------------------------------------------------------------- {{{ " " 启用折叠标记方法。 augroup filetype_vim autocmd! autocmd FileType vim setlocal foldmethod=marker augroup END " " 如果当前文件类型是 HTML,则将缩进设置为 2 个空格。 autocmd Filetype html setlocal tabstop=2 shiftwidth=2 expandtab " " 如果 Vim 版本等于或大于 7.3 启用撤消文件。 " 这使您即使在保存文件后也可以撤消对文件的更改。 if version >= 703 set undodir=~/.vim/backup set undofile set undoreload=10000 endif " " 你可以通过输入 `:split` 或 `:vsplit` 将一个窗口分割成多个部分。 " 仅在活动窗口中显示光标线和光标列。 augroup cursor_off autocmd! autocmd WinLeave * set nocursorline nocursorcolumn autocmd WinEnter * set cursorline cursorcolumn augroup END " " 如果 Vim 的 GUI 版本正在运行,请设置这些选项。 if has('gui_running') " " 设置背景色。 set background=dark " " 设置 vimrc 主题配色方案。 colorscheme molokai " " 设置您在计算机上安装的自定义字体。 " Syntax: \ \ set guifont=Monospace\ Regular\ 12 " " 默认显示更多文件。 " 隐藏工具栏。 set guioptions-=T " " 隐藏左侧滚动条。 set guioptions-=L " " 隐藏右侧滚动条。 set guioptions-=r " " 隐藏菜单栏。 set guioptions-=m " " 隐藏底部滚动条。 set guioptions-=b " " 映射 F4 键以切换菜单、工具栏和滚动条。 " 是管道字符。 " 是回车键。 nnoremap :if &guioptions=~#'mTr' \set guioptions-=mTr \else \set guioptions+=mTr \endif " endif " " }}} " " 状态行 ------------------------------------------------------------ {{{ " " 重新加载 vimrc 时清除状态行。 set statusline= " " 状态行左侧。 set statusline+=\ %F\ %M\ %Y\ %R " " 使用分隔线将左侧与右侧分开。 set statusline+=%= " " 状态行右侧。 "set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%% " " 在倒数第二行显示状态。 set laststatus=2 " " }}}
原文配置
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " ██╗ ██╗██╗███╗ ███╗██████╗ ██████╗ " ██║ ██║██║████╗ ████║██╔══██╗██╔════╝ " ██║ ██║██║██╔████╔██║██████╔╝██║ " ╚██╗ ██╔╝██║██║╚██╔╝██║██╔══██╗██║ " ╚████╔╝ ██║██║ ╚═╝ ██║██║ ██║╚██████╗ " ╚═══╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Disable compatibility with vi which can cause unexpected issues. set nocompatible " Enable type file detection. Vim will be able to try to detect the type of file is use. filetype on " Enable plugins and load plugin for the detected file type. filetype plugin on " Load an indent file for the detected file type. filetype indent on " Turn syntax highlighting on. syntax on " Add numbers to the file. set number " Highlight cursor line underneath the cursor horizontally. set cursorline " Highlight cursor line underneath the cursor vertically. set cursorcolumn " Set shift width to 4 spaces. set shiftwidth=4 " Set tab width to 4 columns. set tabstop=4 " Use space characters instead of tabs. set expandtab " Do not save backup files. set nobackup " Do not let cursor scroll below or above N number of lines when scrolling. set scrolloff=10 " Do not wrap lines. Allow long lines to extend as far as the line goes. set nowrap " While searching though a file incrementally highlight matching characters as you type. set incsearch " Ignore capital letters during search. set ignorecase " Override the ignorecase option if searching for capital letters. " This will allow you to search specifically for capital letters. set smartcase " Show partial command you type in the last line of the screen. set showcmd " Show the mode you are on the last line. set showmode " Show matching words during a search. set showmatch " Use highlighting when doing a search. set hlsearch " Set the commands to save in history default number is 20. set history=1000 " Enable auto completion menu after pressing TAB. set wildmenu " Make wildmenu behave like similar to Bash completion. set wildmode=list:longest " There are certain files that we would never want to edit with Vim. " Wildmenu will ignore files with these extensions. set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx " PLUGINS ---------------------------------------------------------------- {{{ call plug#begin('~/.vim/plugged') Plug 'dense-analysis/ale' Plug 'preservim/nerdtree' call plug#end() " }}} " MAPPINGS --------------------------------------------------------------- {{{ " Set the backslash as the leader key. let mapleader = "\" " Press \\ to jump back to the last cursor position. nnoremap\ `` " Press \p to print the current file to the default printer from a Linux operating system. " View available printers: lpstat -v " Set default printer: lpoptions -d " means do not display output. nnoremap p :%w !lp " Type jj to exit insert mode quickly. inoremap jj " Press the space bar to type the : character in command mode. nnoremap : " Pressing the letter o will open a new line below the current one. " Exit insert mode after creating a new line above or below the current line. nnoremap o o nnoremap O O " Center the cursor vertically when moving to the next word during a search. nnoremap n nzz nnoremap N Nzz " Yank from cursor to the end of line. nnoremap Y y$ " Map the F5 key to run a Python script inside Vim. " We map F5 to a chain of commands here. " :w saves the file. " (carriage return) is like pressing the enter key. " !clear runs the external clear screen command. " !python3 % executes the current file with Python. nnoremap :w :!clear :!python3 % " You can split the window in Vim by typing :split or :vsplit. " Navigate the split view easier by pressing CTRL+j, CTRL+k, CTRL+h, or CTRL+l. nnoremap j nnoremap k nnoremap h nnoremap l " Resize split windows using arrow keys by pressing: " CTRL+UP, CTRL+DOWN, CTRL+LEFT, or CTRL+RIGHT. noremap + noremap - noremap > noremap < " NERDTree specific mappings. " Map the F3 key to toggle NERDTree open and close. nnoremap :NERDTreeToggle " Have nerdtree ignore certain files and directories. let NERDTreeIgnore=['\.git$', '\.jpg$', '\.mp4$', '\.ogg$', '\.iso$', '\.pdf$', '\.pyc$', '\.odt$', '\.png$', '\.gif$', '\.db$'] " }}} " VIMSCRIPT -------------------------------------------------------------- {{{ " Enable the marker method of folding. augroup filetype_vim autocmd! autocmd FileType vim setlocal foldmethod=marker augroup END " If the current file type is HTML, set indentation to 2 spaces. autocmd Filetype html setlocal tabstop=2 shiftwidth=2 expandtab " If Vim version is equal to or greater than 7.3 enable undofile. " This allows you to undo changes to a file even after saving it. if version >= 703 set undodir=~/.vim/backup set undofile set undoreload=10000 endif " You can split a window into sections by typing `:split` or `:vsplit`. " Display cursorline and cursorcolumn ONLY in active window. augroup cursor_off autocmd! autocmd WinLeave * set nocursorline nocursorcolumn autocmd WinEnter * set cursorline cursorcolumn augroup END " If GUI version of Vim is running set these options. if has('gui_running') " Set the background tone. set background=dark " Set the color scheme. colorscheme molokai " Set a custom font you have installed on your computer. " Syntax: \ \ set guifont=Monospace\ Regular\ 12 " Display more of the file by default. " Hide the toolbar. set guioptions-=T " Hide the the left-side scroll bar. set guioptions-=L " Hide the the left-side scroll bar. set guioptions-=r " Hide the the menu bar. set guioptions-=m " Hide the the bottom scroll bar. set guioptions-=b " Map the F4 key to toggle the menu, toolbar, and scroll bar. " is the pipe character. " is the enter key. nnoremap :if &guioptions=~#'mTr' \set guioptions-=mTr \else \set guioptions+=mTr \endif endif " }}} " STATUS LINE ------------------------------------------------------------ {{{ " Clear status line when vimrc is reloaded. set statusline= " Status line left side. set statusline+=\ %F\ %M\ %Y\ %R " Use a divider to separate the left side from the right side. set statusline+=%= " Status line right side. "set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%% " Show the status on the second to last line. set laststatus=2 " }}}